﻿#region Using
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using eLoje_Model;
using System.Data.SqlClient;
using System.Data;
#endregion

#region Namespace
namespace Eloje_Data
{
    #region Classe
    public class MedidaDA : DbMain
    {
        #region Contrutores
        public MedidaDA()
        {
            conectar();
        }
        #endregion

        #region Metodos

        public void setDisableMedida(int codMedida, string descMedida, string usuario)
        {
            setAmendMedida(codMedida, descMedida, "D", usuario, "D");
        }
        public void setEnableMedida(int codMedida, string descMedida, string usuario)
        {
            setAmendMedida(codMedida, descMedida, "H", usuario, "H");
        }

        /// <summary>
        /// Usado para preencher a Listagem de Medidas
        /// </summary>
        /// <returns>List MedidaVO</returns>
        public List<MedidaVO> getMedidas()
        {
            List<MedidaVO> list = null;
            try
            {
                SqlCommand cmd = new SqlCommand("SP_ELOJE_WEB_CAD_MEDIDA_CONSULTAR", conn);

                using (IDataReader reader = cmd.ExecuteReader())
                {
                    list = new List<MedidaVO>();
                    while (reader.Read())
                    {
                        MedidaVO vo = new MedidaVO();
                        vo.COD_MEDIDA = Convert.ToInt32(reader["CD_MEDIDA"].ToString());
                        vo.MEDIDA = reader["DESC_MEDIDA"].ToString();
                        list.Add(vo);
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return list;
        }

        public List<MedidaVO> getMedida()
        {
            List<MedidaVO> list = null;
            try
            {
                SqlCommand cmd = new SqlCommand("SP_ELOJE_WEB_CAD_MEDIDA_LISTAR", conn);

                using (IDataReader reader = cmd.ExecuteReader())
                {
                    list = new List<MedidaVO>();
                    while (reader.Read())
                    {
                        MedidaVO vo = new MedidaVO();
                        vo.COD_MEDIDA = Convert.ToInt32(reader["CD_MEDIDA"].ToString());
                        vo.MEDIDA = reader["DESC_MEDIDA"].ToString();
                        vo.STATUS = reader["SITUACAO"].ToString();
                        list.Add(vo);
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return list;
        }

        public List<MedidaVO> getMedida(string pCodDepartamento)
        {
            List<MedidaVO> list = null;
            try
            {
                SqlCommand cmd = new SqlCommand("SP_ELOJE_WEB_CAD_MEDIDA_LISTA_BY_DEPARTAMENTO", conn);

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@COD_DEPARTAMENTO", pCodDepartamento);

                using (IDataReader reader = cmd.ExecuteReader())
                {
                    list = new List<MedidaVO>();
                    while (reader.Read())
                    {
                        MedidaVO vo = new MedidaVO();
                        vo.COD_MEDIDA = Convert.ToInt32(reader["CD_MEDIDA"].ToString());
                        vo.MEDIDA = reader["DESC_MEDIDA"].ToString();
                        list.Add(vo);
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return list;
        }


        public List<MedidaVO> getMedidaLog(int pCodMedida)
        {
            List<MedidaVO> list = null;
            try
            {
                SqlCommand cmd = new SqlCommand("SP_ELOJE_WEB_CAD_MEDIDA_LOG", conn);

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@COD_MEDIDA", pCodMedida);

                using (IDataReader reader = cmd.ExecuteReader())
                {
                    list = new List<MedidaVO>();
                    while (reader.Read())
                    {
                        MedidaVO vo = new MedidaVO();
                        vo.MEDIDA = reader["DESC_MEDIDA"].ToString();
                        vo.STATUS = reader["STATUS"].ToString();
                        vo.ACTION = reader["ACTION"].ToString();
                        vo.USER = reader["USUARIO"].ToString();
                        vo.DATA_LOG = Convert.ToDateTime(reader["DATE_TIME"]);
                        list.Add(vo);
                    }
                }
            }
            catch (Exception ex)
            {

            }
            return list;
        }

        public void setAmendMedida(int pCodMedida, string pDescMedida, string pStatus, string pUsuario, string pOper)
        {
            SqlCommand cmd = new SqlCommand("SP_ELOJE_WEB_CAD_MEDIDA_ALTERAR", conn);

            //int retorno = 0;           
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@COD_MEDIDA", pCodMedida);
            cmd.Parameters.AddWithValue("@DESC_MEDIDA", pDescMedida);
            cmd.Parameters.AddWithValue("@STATUS", pStatus);
            cmd.Parameters.AddWithValue("@USERID", pUsuario);
            cmd.Parameters.AddWithValue("@OPER", pOper);
            SqlParameter ret = cmd.Parameters.Add("@RET_SUCESS", SqlDbType.TinyInt);
            ret.Direction = ParameterDirection.Output;

            cmd.ExecuteNonQuery();

            //tratar erro
        }

        public void setNewMedida(string pDescMedida, string pUsuario)
        {
            try
            {
                SqlCommand cmd = new SqlCommand("SP_ELOJE_WEB_CAD_MEDIDA", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@DESC_MEDIDA", pDescMedida);
                cmd.Parameters.AddWithValue("@USERID", pUsuario);
                SqlParameter ret = cmd.Parameters.Add("@RET_SUCESS", SqlDbType.TinyInt);
                ret.Direction = ParameterDirection.Output;

                cmd.ExecuteNonQuery();

                //tratar erro
            }
            catch (Exception)
            {

                throw;
            }
        }
        #endregion
    }
    #endregion
}
#endregion